/*
 *Description:
 *User:laoHu
 *Created with Intellij IDEA 2025
 *Data:2025.06.22
 *Time:10:31
 */

import java.io.FileNotFoundException;
import java.util.Scanner;

class T /*implements Cloneable*/{
    int a =10;

    @Override
    protected Object clone() throws CloneNotSupportedException{
        return super.clone();
    }
}
class Config{
    String name = "test.java";
   void openFile(String name) throws FileNotFoundException{
       if(!(this.name.equals(name)))
         throw new FileNotFoundException("找不到此文件" + name);
       System.out.println("打开成功：" + this.name);
   }

}
class PassWord{
    //密码
    String password = "888888";
    //声明异常
    public void Match(String password) throws PassWordException{
        try {
            if (!(this.password.equals(password)))
               throw new PassWordException("密码匹配失败！");
            else System.out.println("匹配成功！");
        }catch (PassWordException e){
            //处理异常
        }finally{
            System.out.println("异常已处理！");
        }
    }

    //声明异常
    public static void main11(String[] args) throws PassWordException{
        //实例化对象
        PassWord passWord = new PassWord();
        //匹配密码
        passWord.Match("666666");
    }
}
public class Main{


    public static void main10(String[] args) throws ArrayIndexOutOfBoundsException{
       try{

       }finally {
           ;
       }
    }

    //声明异常：数组访问可能越界
    public static void main9(String[] args) throws ArrayIndexOutOfBoundsException{
        int[] arrays = new int[10];//开辟10个int类型空间大小的数组
        Scanner scanner = new Scanner(System.in);
        try {
            //初始化
            for (int i = 0; i < arrays.length; i++) {
                arrays[i] = scanner.nextInt();
            }
            //catch的参数是 异常类型 +  变量名（通常使用e）
        }catch (ArrayIndexOutOfBoundsException e){
            //直接输出错误原因
            e.printStackTrace();

        }finally{
            scanner.close();//释放scanner引用指向的对象
            //最后提示
            System.out.println("完成arrays数组的初始化!");
        }
    }
    //声明异常：数组访问可能越界
    public static void main8(String[] args) throws ArrayIndexOutOfBoundsException{
        int[] arrays = new int[10];//开辟10个int类型空间大小的数组
        Scanner scanner = new Scanner(System.in);
        try {
            //初始化
            for (int i = 0; i <= arrays.length; i++) {
               arrays[i] = scanner.nextInt();
            }
            //catch的参数是 异常类型 +  变量名（通常使用e）
        }catch (ArrayIndexOutOfBoundsException e){
            //可以使用方法输出错误原因后终止程序，也可以不输出
            //系统会处理好异常后执行后面语句
            e.printStackTrace();

            //如果进入此语句内说明存在异常，可以提示异常
            System.out.println("发现数组越界异常，系统正在处理中.....");
        }finally{
            scanner.close();//释放scanner引用指向的对象
        }
        //最后提示
        System.out.println("完成arrays数组的初始化，并处理了异常");
    }

    public static void print_chars(char[] chars){
        if(chars == null) //抛出空引用异常
            throw new NullPointerException("chars是空引用，不可以使用空引用访问！");
        //抛出异常后不再执行后续语句
        for (int i = 0; i < chars.length; i++) {
            System.out.print(chars[i] + " ");
        }
    }
    public static void main7(String[] args) {
        char[] chars = null;//chaars赋值空引用
        print_chars(chars);//调用方法打印数组
    }
     //除法
    public static int Div(int x,int y){
        if(y == 0)//使用throw抛出算术异常
            throw new ArithmeticException("分母为零，不可计算！");//参数部分为异常实际原因
                                          //可以输入错误原因，不输入系统会默认不输出错误信息
        return x / y;
    }
    public static void main6(String[] args) {
        int a = 10;
        int b = 0;
        int r = Div(a,b);
    }

    public static void main(String[] args) throws FileNotFoundException{
        Config c = new Config();
        c.openFile("test.txt");
    }

    public static void main4(String[] args) throws CloneNotSupportedException{
        T t = new T();
        T t1 = (T)t.clone();
    }

    public static void main3(String[] args) {
        int[] a = null;
        System.out.println(a[0]);//使用null访问内存空间
    }

    public static void main2(String[] args) {
        int[] arryas = {1,2,3};
        System.out.println(arryas[3]);//数组访问越界
    }

    public static void main1(String[] args) {
        int a = 10;
        int b = 0;
        System.out.println(a/b);//10/0 算术异常
    }
}